# Лекция: Модификаторы доступа и инкапсуляция в Java

Модификаторы доступа в Java определяют область видимости полей, методов, классов и интерфейсов. В Java есть четыре модификатора доступа: `public`, `protected`, `private` и "пакетный" (без модификатора).

- `public`: элемент доступен из любого места.
- `protected`: элемент доступен внутри того же пакета и в подклассах.
- `private`: элемент доступен только внутри того же класса.
- "пакетный" (без модификатора): элемент доступен внутри того же пакета.

Инкапсуляция - это один из основных принципов ООП, который означает "скрытие внутренней реализации и предоставление публичного API". Это достигается с помощью модификаторов доступа.

---

# Практические задания

1. **Создайте класс `Person` с публичным полем `name` и приватным полем `age`.** (Сложность: 1/5)
```java
class Person {
    public String name;
    private int age;
}
```

2. **Создайте класс `Car` с приватными полями `brand` и `model`, и публичными методами `getBrand`, `getModel`, `setBrand` и `setModel`.** (Сложность: 2/5)
```java
class Car {
    private String brand;
    private String model;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }
}
```

3. **Создайте класс `Rectangle` с приватными полями `width` и `height`, и публичными методами `getWidth`, `getHeight`, `setWidth`, `setHeight` и `getArea`.** (Сложность: 2/5)
```java
class Rectangle {
    private int width;
    private int height;

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getArea() {
        return width * height;
    }
}
```

4. **Создайте класс `Circle` с приватным полем `radius` и публичными методами `getRadius`, `setRadius`, `getArea` и `getCircumference`.** (Сложность: 3/5)
```java
class Circle {
    private double radius;

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public double getArea() {
        return Math.PI * radius * radius;
    }

    public double getCircumference() {
        return 2 * Math.PI * radius;
    }
}
```

5. **Создайте класс `Student` с приватными полями `name` и `grade`, и публичными методами `getName`, `getGrade`, `setName`, `setGrade` и `pass`.** (Сложность: 3/5)
```java
class Student {
    private String name;
    private int grade;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    public void pass() {
        grade++;
    }
}
```